#include "Configuration.h"
#include <set>
#include <map>
#ifndef __DICTPRODUCER_H__
#define __DICTPRODUCER_H__
using std::pair;
using std::set; 
using std::map;

class SplitTool;
class DictProducer
{
public:
    DictProducer(const string& confPath,SplitTool* tool)
    :_conf(confPath)
    ,_cuttor(tool)
    {
        //为容器预分配一些空间,防止频繁扩容
        _dict.reserve(500);
    }
//---------------预处理-----------------
    //1.创建停用词的set
    void buildStopSet();
    size_t nBytesCode(const char ch);
//--------------------------------------
    void buildEnDict();
    void buildCnDict();
    void createIndex();
    void store();
    void start();
    ~DictProducer() {}

private:
    Configuration _conf;    //读取配置信息
    set<string> _stopWords; //停用词的集合

    vector<pair<string,int>> _dict; //字典的信息,string表示单词,int表示单词出现的次数
    map<string,set<int>> _index; //存放单词所在位置的索引库,为每个字或者字母建立索引
    
    SplitTool* _cuttor; //用来切分中文句子
};

#endif
